from sqlalchemy import Column, String, INT, DATETIME
from sqlalchemy.ext.declarative import declarative_base
from py.DBUtil import Engine

def Message_class(base=declarative_base()):
    class Message(base):
        __tablename__ = "message"

        __table_args__ = {'extend_existing': True}

        ReaderID = Column(INT, nullable=False, primary_key=True)

        ReaderName = Column(String(30))

        message = Column(String(50), nullable=False)

        datetime = Column(DATETIME, nullable=False, primary_key=True)

        session = Engine.DBSession()

        def __getitem__(self, item):
            '''内置方法, 当使用obj['name']的形式的时候, 将调用这个方法, 这里返回的结果就是值'''
            return getattr(self, item)

        def keys(self):
            '''当对实例化对象使用dict(obj)的时候, 会调用这个方法,这里定义了字典的键, 其对应的值将以obj['name']的形式取,
            但是对象是不可以以这种方式取值的, 为了支持这种取值, 可以为类增加一个方法'''
            return 'ReaderID', 'ReaderName', 'message', 'datetime'

    return Message

